#![allow(unused_imports, non_snake_case, non_camel_case_types)]
use super::windows::*;
use super::*;

#[repr(C)]
pub struct IDWriteFontFallbackVtbl {
	pub parent: IUnknownVtbl,
	pub MapCharacters: unsafe extern "system" fn(This: *mut IDWriteFontFallback, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: UINT32, textLength: UINT32, baseFontCollection: *mut IDWriteFontCollection, baseFamilyName: *mut wchar_t, baseWeight: DWRITE_FONT_WEIGHT, baseStyle: DWRITE_FONT_STYLE, baseStretch: DWRITE_FONT_STRETCH, mappedLength: *mut UINT32, mappedFont: *mut *mut IDWriteFont, scale: *mut FLOAT) -> HRESULT,
}
#[repr(C)]
pub struct IDWriteFontFallback {
	pub lpVtbl: *const IDWriteFontFallbackVtbl,
}
impl IDWriteFontFallback {
	#[inline]
	pub unsafe fn MapCharacters(&self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: UINT32, textLength: UINT32, baseFontCollection: *mut IDWriteFontCollection, baseFamilyName: *mut wchar_t, baseWeight: DWRITE_FONT_WEIGHT, baseStyle: DWRITE_FONT_STYLE, baseStretch: DWRITE_FONT_STRETCH, mappedLength: *mut UINT32, mappedFont: *mut *mut IDWriteFont, scale: *mut FLOAT) -> HRESULT {
		((*self.lpVtbl).MapCharacters)(self as *const _ as *mut _, analysisSource, textPosition, textLength, baseFontCollection, baseFamilyName, baseWeight, baseStyle, baseStretch, mappedLength, mappedFont, scale)
	}
}
impl core::ops::Deref for IDWriteFontFallback {
	type Target = IUnknown;
	#[inline]
	fn deref(&self) -> &IUnknown {
		unsafe { &*(self as *const IDWriteFontFallback as *const IUnknown) }
	}
}
impl Interface for IDWriteFontFallback {
	#[inline]
	fn uuidof() -> GUID {
		GUID { Data1: 0xefa008f9, Data2: 0xf7a1, Data3: 0x48bf, Data4: [0xb0, 0x5c, 0xf2, 0x24, 0x71, 0x3c, 0xc0, 0xff] }
	}
}
